home *** CD-ROM | disk | FTP | other *** search
/ Java 1996 August / Java - Summer 1996.iso / kaffe-0.2 / lib / native / java.io / java.io.File.c next >
C/C++ Source or Header  |  1996-02-11  |  4KB  |  215 lines

  1. /*
  2.  * java.io.File.c
  3.  *
  4.  * Copyright (c) 1996 Systems Architecture Research Centre,
  5.  *           City University, London, UK.
  6.  *
  7.  * See the file "license.terms" for information on usage and redistribution
  8.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  9.  *
  10.  * Written by Tim Wilkinson <tim@sarc.city.ac.uk>, February 1996.
  11.  */
  12.  
  13. #include <stdio.h>
  14. #include <assert.h>
  15. #include <unistd.h>
  16. #include <native.h>
  17. #include "files.h"
  18. #include "system.h"
  19. #include "java.io.File.h"
  20.  
  21. /*
  22.  * Is named item a file?
  23.  */
  24. long /* bool */
  25. java_io_File_isFile0(struct Hjava_io_File* this)
  26. {
  27.     struct stat buf;
  28.     char str[MAXPATHLEN];
  29.     int r;
  30.  
  31.     javaString2CString(unhand(this)->path, str, sizeof(str));
  32.  
  33.     r = stat(str, &buf);
  34.     if (r == 0 && S_ISREG(buf.st_mode)) {
  35.         return (1);
  36.     }
  37.     else {
  38.         return (0);
  39.     }
  40. }
  41.  
  42. /*
  43.  * Is named item a directory?
  44.  */
  45. long /* bool */
  46. java_io_File_isDirectory0(struct Hjava_io_File* this)
  47. {
  48.     struct stat buf;
  49.     char str[MAXPATHLEN];
  50.     int r;
  51.  
  52.     javaString2CString(unhand(this)->path, str, sizeof(str));
  53.  
  54.     r = stat(str, &buf);
  55.     if (r == 0 & S_ISDIR(buf.st_mode)) {
  56.         return (1);
  57.     }
  58.     else {
  59.         return (0);
  60.     }
  61. }
  62.  
  63. /*
  64.  * Does named file exist?
  65.  */
  66. long /* bool */
  67. java_io_File_exists0(struct Hjava_io_File* this)
  68. {
  69.     struct stat buf;
  70.     char str[MAXPATHLEN];
  71.     int r;
  72.  
  73.     javaString2CString(unhand(this)->path, str, sizeof(str));
  74.  
  75.     r = stat(str, &buf);
  76.     if (r < 0) {
  77.         return (0);
  78.     }
  79.     else {
  80.         return (1);
  81.     }
  82. }
  83.  
  84. /*
  85.  * Last modified time on file.
  86.  */
  87. long long
  88. java_io_File_lastModified0(struct Hjava_io_File* this)
  89. {
  90.     struct stat buf;
  91.     char str[MAXPATHLEN];
  92.     int r;
  93.  
  94.     javaString2CString(unhand(this)->path, str, sizeof(str));
  95.  
  96.     r = stat(str, &buf);
  97.     return (r == 0 ? buf.st_mtime * 1000LL : 0);
  98. }
  99.  
  100. /*
  101.  * Can I write to this file?
  102.  */
  103. long /* bool */
  104. java_io_File_canWrite0(struct Hjava_io_File* this)
  105. {
  106.     char str[MAXPATHLEN];
  107.     int r;
  108.  
  109.     javaString2CString(unhand(this)->path, str, sizeof(str));
  110.     r = access(str, W_OK);
  111.     return (r == 0 ? 1 : 0);
  112. }
  113.  
  114. /*
  115.  * Can I read from this file.
  116.  */
  117. long /* bool */
  118. java_io_File_canRead0(struct Hjava_io_File* this)
  119. {
  120.     char str[MAXPATHLEN];
  121.     int r;
  122.  
  123.     javaString2CString(unhand(this)->path, str, sizeof(str));
  124.     r = access(str, R_OK);
  125.     return (r == 0 ? 1 : 0);
  126. }
  127.  
  128. /*
  129.  * Return length of file.
  130.  */
  131. long long
  132. java_io_File_length0(struct Hjava_io_File* this)
  133. {
  134.     struct stat buf;
  135.     char str[MAXPATHLEN];
  136.     int r;
  137.  
  138.     javaString2CString(unhand(this)->path, str, sizeof(str));
  139.  
  140.     r = stat(str, &buf);
  141.     return (r == 0 ? buf.st_size : 0);
  142. }
  143.  
  144. /*
  145.  * Create a directory.
  146.  */
  147. long /* bool */
  148. java_io_File_mkdir0(struct Hjava_io_File* this)
  149. {
  150.     char str[MAXPATHLEN];
  151.     int r;
  152.  
  153.     javaString2CString(unhand(this)->path, str, sizeof(str));
  154.     r = mkdir(str, 0777);
  155.     return (r);
  156. }
  157.  
  158. /*
  159.  * Rename a file.
  160.  */
  161. long /* bool */
  162. java_io_File_renameTo0(struct Hjava_io_File* this, struct Hjava_io_File* that)
  163. {
  164.     char str[MAXPATHLEN];
  165.     char str2[MAXPATHLEN];
  166.     int r;
  167.  
  168.     javaString2CString(unhand(this)->path, str, sizeof(str));
  169.     javaString2CString(unhand(that)->path, str2, sizeof(str2));
  170.  
  171.     r = rename(str, str2);
  172.     return (r);
  173. }
  174.  
  175. /*
  176.  * Delete a file.
  177.  */
  178. long /* bool */
  179. java_io_File_delete0(struct Hjava_io_File* this)
  180. {
  181.     char str[MAXPATHLEN];
  182.     int r;
  183.  
  184.     javaString2CString(unhand(this)->path, str, sizeof(str));
  185.     r = delete(str);
  186.     return(r);
  187. }
  188.  
  189. /*
  190.  * Get a directory listing (I think)
  191.  */
  192. HArray* /* [Ljava.lang.String; */
  193. java_io_File_list0(struct Hjava_io_File* this)
  194. {
  195.     abort();
  196. }
  197.  
  198. /*
  199.  * Is this filename absolute?
  200.  */
  201. long /* bool */
  202. java_io_File_isAbsolute(struct Hjava_io_File* this)
  203. {
  204.     char str[1];
  205.  
  206.     javaString2CString(unhand(this)->path, str, sizeof(str));
  207.  
  208.     if (str[0] == file_seperator[0]) {
  209.         return (1);
  210.     }
  211.     else {
  212.         return (0);
  213.     }
  214. }
  215.